/*lic*/
#ifndef __BSP_I2C_INIT_HELPER_H__
#define __BSP_I2C_INIT_HELPER_H__

#include "main.h"

// rtc
extern I2c_Data_Task_Def i2c1_ctrl;
// eeprom
extern I2c_Data_Task_Def i2c3_ctrl;

rt_err_t Init_I2c_Ctrl(I2c_Data_Task_Def* ctrl_obj, char *obj_name);

void App_I2CxCfg(void);
// 发送开始信号，触发开始事件中断。启动一次单向传输
void Master_Start(CM_I2C_TypeDef * CM_I2Cx);
// 中断发送数据
int32_t I2C_Master_Transmit_IT(CM_I2C_TypeDef *CM_I2Cx, I2c_Data_Task_Def *ctrl_obj);
// 中断接收数据
int32_t I2C_Master_Receive_IT(CM_I2C_TypeDef *CM_I2Cx, I2c_Data_Task_Def *ctrl_obj);
// 进行一个完整的收发任务
int32_t I2C_Master_Translate_IT(CM_I2C_TypeDef *CM_I2Cx, I2c_Data_Task_Def *ctrl_obj, uint16_t addr);

// 接收寄存器满中断，接收完数据
void INT_SRC_I2C1_RXI_IrqCallback(void);
// I2C1 外部RTC数据发送1字节完成中断
void INT_SRC_I2C1_TXI_IrqCallback(void);
// 发送停止条件中断
void INT_SRC_I2C1_TEI_IrqCallback(void);
// I2C1 外部RTC事件及错误中断
void INT_SRC_I2C1_EEI_IrqCallback(void);

// 接收寄存器满中断，接收完数据
void INT_SRC_I2C3_RXI_IrqCallback(void);
// I2C1 外部RTC数据发送1字节完成中断
void INT_SRC_I2C3_TXI_IrqCallback(void);
// 发送停止条件中断
void INT_SRC_I2C3_TEI_IrqCallback(void);
// I2C1 外部RTC事件及错误中断
void INT_SRC_I2C3_EEI_IrqCallback(void);

#endif /* __BSP_I2C_INIT_HELPER_H__ */

/*eof*/
